\documentclass[palatino,gruppe-aus,semester-aus,veranstaltung-aus,abgabe-aus,tutor-aus,utf]{uhb-inf}
\usepackage{url,wrapfig}

\beschreibung{\texttt{\LARGE\uhbinfclassname\ \normalsize\uhbinfclassversion-\uhbinfclassdate}}
\zettel{}{}
\gruppe{}{Dominik Menke, \url{dmke@tzi.de}}

\renewcommand\thesection{\arabic{section}}
\def\option#1{\texttt{\bfseries #1}}
\def\cs#1{\char`\\#1}
\def\p#1{$\langle$\textit{#1}$\rangle$}
\def\pb#1{\{\p{#1}\}}

\begin{document}

\section{Klassen- und Paketbeschreibung}

Die Klasse \texttt{uhb-inf.cls} stellt die Weiterentwicklung der Klasse \texttt{pi1.cls} dar, die wiederum eine von Thomas Röfer adaptierte Version aus \texttt{pi1-muster.cls} und \texttt{defs.tex} war. Nachdem ich mich nun zwei Jahre intensiv mit \LaTeX\ beschäftigt habe, habe ich mir mal die Mühe gemacht einige Dinge auszumerzen, die man so (nicht) mehr macht,\footnote{\url{http://www.ctan.org/tex-archive/info/l2tabu/}} oder anders besser lösen kann. Da mir allerdings die \texttt{pi1.cls} eine große Hilfe beim Lernen von \LaTeX\ war, denke ich ist es nur konsequent, diese Verbesserungen auch an die Erstsemester weiter zu geben.

Herausgekommen ist dabei eine gut anpassbare Dokumentklasse, die sich nicht nur für PI\,1--3, sondern auch für Mathe/Theo/etc. einsetzen lässt.

Im Folgenden seien die Klassenoptionen sowie die bereitgestellten Befehle vorgestellt. Zuvor möchte ich aber die vorausgesetzten und empfohlenen Pakete auflisten.

\subsection{Paketvoraussetzungen}

Es empfiehlt sich immer, ein komplettes und aktuelles \TeX-System zur Verfügung zu haben, und nicht nur den \textit{required}-Teil zu installieren. Letzterer erlaubt eher "`nur"' rudimentären Schriftsatz, abgefahrenere Kommandos sind aber zum Großteil eben nicht enthalten. Bei heutigen Festplattenpreisen sollten 1,5\,GB für Texlive 2008\footnote{\url{http://www.tug.org/texlive/}} nicht schmerzen.

Wer dennoch ein Minimalsystem sein eigen nennt, muss wenigstens diese \LaTeX-Pakete installiert haben:

\begin{itemize}[noitemsep]
	\item \option{amssymb}\footnote{\url{http://tug.ctan.org/tex-archive/fonts/amsfonts/latex}},\footnote{\url{http://www.ams.org/tex/amsfonts.html}}
	\item \option{geometry}\footnote{\url{http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=geometry}}
	\item \option{listings}\footnote{\url{http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=listings}}
	\item \option{fancyhdr}\footnote{\url{http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=fancyhdr}}
	\item \option{enumitem}\footnote{\url{http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=enumitem}}
	\item Fonts \option{mathpazo} und \option{beramono}
	\item oder Fonts \option{mathptmx}, \option{helvet} und \option{courier}
	\item oder Font \option{lmodern}
\end{itemize}

Daneben werden diese Standardpakete eingebunden (die sowieso immer eingebunden werden sollten):

\begin{itemize}[noitemsep]
	\item \option{ifthen},
	\item \option{inputenc} mit passender Kodierung (siehe unten),
	\item \option{babel} mit neuer deutscher Rechtschreibung,
	\item \option{fontenc},
	\item \option{graphicx},
	\item \option{calc},
	\item \option{amsmath},
	\item \option{textcomp},
	\item \option{verbatim}
\end{itemize}

Wie man die einzelnen Pakete nachinstalliert ist sowohl betriebssystem- als auch \TeX"=distributionsspezifisch. Ist ein komplettes \TeX-System eingerichtet, sind die erforderlichen Pakete ebenfalls dabei\dots

\subsection{Klassenoptionen}

Zur schnellen Anpassung gibt es eine Reihe von Optionen, die in der Form

\begin{verbatim}
    \documentclass[option-1,...,option-n]{uhb-inf}
\end{verbatim}

angegeben werden können. Einige sind obligatorisch, ein Fehlen wird durch eine Warnung beim Kompilervorgang bekannt gegeben.

\subsubsection{Eingabekodierung}

Zur Wahl stehen \option{utf}, \option{mac}, \option{win} und \option{unix}, die entsprechende Zeichenkodierungen (\textit{utf8}, \textit{applemac}, \textit{latin15} bzw. \textit{latin1}) nachladen. Wird keine dieser Optionen angegeben, erscheint der Hinweis, dass man eine eigene Eingabekodierung angeben sollte. Es gibt hier also keinen Default-Wert.

\subsubsection{Schriften}

Es stehen drei Schrift-Themen zur Auswahl:

\begin{enumerate}
	\item Das klassische \LaTeX-Erscheinungsbild mit "`Computer Modern"'-Fonts, bzw. der verbesserten Variante "`Latin Modern"'. Hierzu ist keine Option nötig.
	\item Eine modernere Variante mit Palatino als Brotschrift und Bera Mono als dicktengleiche Schrift für den Quelltext (wie in diesem Dokument). Hierzu gibt es die Option \option{palatino}.
	\item Als letztes gibt es noch ein "`sparsames"' Thema, das native PDF-Schriften verwendet und so die Dateigröße der PDF signifikant verkleinert. Allerdings sind die mit \option{times} eingestellten Schriften (Helvetica, Times und Courier) nicht sonderlich schön.
\end{enumerate}

\subsection{Anzeige verschiedener Variablen}

Wie später noch gezeigt wird, lassen sich einige definierte Variablen entfernen. Im einzelnen sind dies:

\begin{itemize}
	\item \option{tutor-aus} -- unterbindet die Ausgabe des Tutors im Titel und den Kopfzeilen
	\item \option{gruppe-aus} -- "`Gruppe"' plus Nummer werden nicht ausgegeben
	\item \option{abgabe-aus} -- das Abgabedatum erschein nicht
	\item \option{semester-aus} -- die Semesterangabe wird unterdrückt
	\item \option{beschreibung-aus} -- die Angabe der Beschreibung ("`Aufgabenblatt"' bzw. "`Lösungsblatt"') wird unterbunden
	\item \option{veranstaltung-aus} -- dies schaltet die Ausgabe der Veranstaltungsbezeichnung aus.
\end{itemize}

\subsubsection{Verschiedenes}

Per Default wird unter der Veranstaltungsbezeichnung die Zeichenkette "`Lösungsblatt"' ausgegeben, mit der Option \option{aufgabenblatt} wird diese zu "`Aufgabenblatt"' angeändert. Primär ist dies also zur Unterscheidung zwischen Aufgaben und Lösungen zu verstehen.

\newpage

Die bei diesem Dokument aktiven Optionen lauten:

\begin{verbatim}
    \documentclass[
        palatino,
        gruppe-aus,semester-aus,veranstaltung-aus,tutor-aus,abgabe-aus,
        utf
    ]{uhb-inf}
\end{verbatim}

\subsection{Befehle und Umgebungen}

Die wichtigsten Befehle zum Einrichten des Titels und der Kopfzeilen sind die folgenden:

\begin{itemize}
	\item \option{\cs{veranstaltung}\pb{kurz}\pb{lang}} -- speichert die Bezeichnung der Veranstaltung; \p{lang} sollte soetwas wie "`Praktische Informatik 1"' sein, während \p{kurz} nur "`PI1"' bekommt.
	\item \option{\cs{gruppe}\pb{nummer}\pb{teilnehmer}} -- speichert die Gruppenbezeichnung \p{nummer} sowie die Teilnehmer \p{teilnehmer}. Die Teilnehmer müssen durch \texttt{\cs\cs{}} getrennt sein, z.B. \texttt{\cs{gruppe}\{\$ \cs{alpha}\$\}\{Jane Doe\cs\cs{}Max Mustermann\}}.
	\item Mit \option{\cs{zettel}\pb{nummer}\pb{abgabedatum}} kann die Zettel-Bezeichnung gespeichert werden.
	\item \option{\cs{semester}\pb{bezeichnung}} speichert das Semester, z.B. \texttt{\cs{semester}\{WS 2009/10\}}.
	\item \option{\cs{tutorin}\pb{name}} oder \option{\cs{tutor}\pb{name}} speichert den Namen der Tutorin bzw. des Tutors.
	\item Zur Anpassung der "`Beschreibung"' (also je nach Option "`Aufgabenblatt"' oder "`Lösungsblatt"') kann \option{\cs{beschreibung}\pb{beschreibung}} verwendet werden.
	\item Im Gegensatz zu den Standardklassen wird das Makro \option{\cs{maketitle}} automatisch ausgeführt und kann daher nicht vergessen werden.
\end{itemize}

Daneben gibt es die Umgebung \texttt{Java}, welche Java-Quellcode nicht nur wiedergibt, sondern auch ein wenig aufhübscht. Prinzipiell handelt es sich dabei um eine \texttt{lstlisting}\footnote{Siehe dazu \texttt{listings}-Paket, \url{http://tug.ctan.org/tex-archive/macros/latex/contrib/listings/}}-Umgebung, eben speziell auf Java zugeschnitten. Dieser Umgebung können verschiedene Optionen mitgegeben werden (siehe dazu die Doku), per Default haben alle Listings diese Optionen aktiv:

\begin{lstlisting}[language=tex]
\lstset{
	numbers=left,
	basicstyle=\footnotesize\ttfamily,
	numberstyle=\tiny\sffamily,
	tabsize=4,
	xleftmargin=30pt,
	breaklines=true,
}
\end{lstlisting}

Für die Java-Umgebung ist noch zusätzlich \texttt{language=Java} gesetzt.

\subsection{Bezug}

Zu dieser Klasse wurde ein \textit{Google Code}-Projekt mitsamt SVN-Repository angelegt. Das Projekt ist unter \url{http://code.google.com/p/uhb-inf-tex} zu erreichen, auf das Repository kann via

\begin{verbatim}
    svn checkout http://uhb-inf-tex.googlecode.com/svn/trunk/ ./uhb-inf-tex
\end{verbatim}

anonym zugegriffen werden. Weiter sind auf der Projektseite ein Wiki mit Installationsanleitungen und weitere Resourcen verlinkt.

\subsection{Minimalbeispiele}

Im Repository finden sich unter \texttt{trunk/doc/minimalbeispiele} zwei kleine Beispiele, einmal ein Pseudo-Aufgabenzettel und einmal eine dazugehörige Abgabe.

\subsection{Ausblick}

Einige Dinge, die noch auf der Todo-Liste stehen sind:

\begin{itemize}
	\item Quellcodedokumentation ausbauen
\end{itemize}

\section{Ein Beispieldokument}

\begin{center}
	\setlength\fboxsep{0pt}
	\setlength\fboxrule{.01667em}
	\fbox{\includegraphics[width=.9\linewidth]{resources/blindtext.pdf}}
\end{center}

Der Quellcode hierzu findet sich ebenfalls im Repository.

\end{document}
